home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1995 October / EnigmA AMIGA RUN 01 (1995)(G.R. Edizioni)(IT)[!][issue 1995-10][Aminet 7].iso / Aminet / util / misc / CPU112.lha / PatchExcept.asm < prev    next >
Assembly Source File  |  1995-01-15  |  1KB  |  77 lines

  1.     opt    p=68020
  2.  
  3. START    move.l    $4.w,a6
  4.     jsr    _LVOForbid(a6)
  5.     lea    SetExept(pc),a5
  6.     jsr    _LVOSupervisor(a6)
  7.     lea    START-4(pc),a0
  8.     clr.l    (a0)
  9.     jsr    _LVOCacheClearU(a6)
  10.     jsr    _LVOPermit(a6)
  11.     moveq    #0,d0
  12.     rts
  13.     cnop    0,4
  14. SetExept    lea    Except,a0
  15.     btst    #AFB_68010,AttnFlags+1(a6)
  16.     beq.s    .68000
  17.     movec    vbr,a1
  18.     move.l    $20(a1),OldVec-Except+2(a0)
  19.     move.l    a0,$20(a1)
  20.     move.l    a0,$20.w
  21.     btst    #AFB_68040,AttnFlags+1(a6)
  22.     beq.s    .skip
  23.     opt    p=68040
  24.     cpusha    dc
  25.     opt    p=68020
  26. .skip    rte
  27.     cnop    0,4
  28. .68000    move.l    $20.w,OldVec-Except+2(a0)
  29.     move.l    a0,$20.w
  30.     rte
  31.  
  32.     dc.b    "$VER: PatchExcept 1.2 (15.1.95) by Martin Berndt",0
  33.  
  34.     section    Patch,CODE
  35.  
  36. Exit    movem.l    (sp)+,d0/a0/a6
  37. OldVec    jmp    $f80000
  38.     cnop    0,4
  39. Except    movem.l    d0/a0/a6,-(sp)
  40.     move.l    $4.w,a6
  41.     btst    #AFB_68010,AttnFlags+1(a6)
  42.     beq.s    Exit
  43.     move.l    $e(sp),a0
  44.     cmpi.w    #$21fc,-8(a0)
  45.     bne.s    .cont
  46.     cmp.l    -6(a0),a0
  47.     bne.s    .cont
  48.     cmpi.w    #$20,-2(a0)
  49.     bne.s    .cont
  50.     move.l    usp,a6
  51.     move.l    a0,-(a6)
  52.     move.l    a6,usp
  53.     movem.l    (sp)+,d0/a0/a6
  54.     move.l    usp,sp
  55.     rts
  56.     cnop    0,4
  57. .cont    move.w    (a0),d0
  58.     andi.w    #$ffc0,d0
  59.     cmpi.w    #$40c0,d0
  60.     bne.s    Exit
  61.     ori.b    #2,(a0)
  62.     btst    #AFB_68020,AttnFlags+1(a6)
  63.     beq.s    .exit
  64.     btst    #AFB_68040,AttnFlags+1(a6)
  65.     bne.s    .68040
  66.     movec    a0,caar
  67.     movec    cacr,d0
  68.     bset    #2,d0
  69.     movec    d0,cacr
  70.     bra.s    .exit
  71.     cnop    0,4
  72.     opt    p=68040
  73. .68040    cpusha    dc
  74.     cinva    bc
  75. .exit    movem.l    (sp)+,d0/a0/a6
  76.     rte
  77.